#define _CRT_SECURE_NO_WARNINGS 1




//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	if (strlen("abc") - strlen("abcdef") > 0)
//	{
//		printf("大于\n");
//	}
//	else
//	{
//		printf("小于等于\n");
//	}
//
//	return 0;
//}


//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	if ((int)strlen("abc") - (int)strlen("abcdef") > 0)
//	{
//		printf("大于\n");
//	}
//	else
//	{
//		printf("小于等于\n");
//	}
//
//	return 0;
//}


//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	if (strlen("abc") > strlen("abcdef"))
//	{
//		printf("大于\n");
//	}
//	else
//	{
//		printf("小于等于\n");
//	}
//
//	return 0;
//}



//#include <stdio.h>
//
////1. 计数器
//size_t my_strlen(const char* str)
//{
//	int count = 0;
//
//	while (*str != '\0')
//	{
//		count++;
//		str++;
//	}
//
//	return count;
//}
//
////2. 指针-指针
////3. 递归的方法
//
//int main()
//{
//	size_t sz = my_strlen("abc");
//	printf("%u\n", sz);
//
//	return 0;
//}




//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr1[20] = { 0 };
//	//char* arr1 = "xxxxxxxxxx";//err  常量字符串不能被修改
//	//char arr2[] = "hello bit";
//	char arr2[6] = { 'a', 'b', 'c', 'd', 'e', '\0' };
//	strcpy(arr1, arr2);
//	printf("%s\n", arr1);
//
//	return 0;
//}




//#include <stdio.h>
//#include <assert.h>
//
////char* my_strcpy(char* dest, const char* src)
////{
////	char* ret = dest;
////	assert(dest != NULL);
////	assert(src != NULL);
////
////	while (*src != '\0')
////	{
////		*dest = *src;
////		dest++;
////		src++;
////	}
////
////	*dest = *src;//\0
////
////	return ret;
////}
//
//char* my_strcpy(char* dest, const char* src)
//{
//	char* ret = dest;
//	assert(dest != NULL);
//	assert(src != NULL);
//
//	while (*dest++ = *src++)
//	{
//		;
//	}
//
//	return ret;
//}
//
//int main()
//{
//	char arr1[20] = "hello world";
//	char arr2[] = "xxxxx";
//	//printf("%s\n", my_strcpy(arr1, arr2));
//	my_strcpy(arr1 + 6, arr2);
//	printf("%s\n", arr1);
//
//	return 0;
//}






//目标字符串也必须以'\0'结束
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr1[20] = "hello";
//	char arr2[] = "world";
//	strcat(arr1, arr2);
//	printf("%s\n", arr1);
//
//	return 0;
//}





//#include <stdio.h>
//#include <assert.h>
//
//char* my_strcat(char* dest, const char* src)
//{
//	assert(dest && src);
//
//	char* ret = dest;
//	//1. 找目标空间中的\0
//	while (*dest)
//	{
//		dest++;
//	}
//
//	while (*dest++ = *src++)
//	{
//		;
//	}
//
//	return ret;
//}
//
//int main()
//{
//	char arr1[20] = "hello ";
//	char arr2[] = "world";
//	my_strcat(arr1, arr2);
//	printf("%s\n", arr1);
//
//	return 0;
//}





//strcat 最好不要自己给自己追加！
//#include <stdio.h>
//#include <assert.h>
//
//char* my_strcat(char* dest, const char* src)
//{
//	assert(dest && src);
//
//	char* ret = dest;
//	//1. 找目标空间中的\0
//	while (*dest)
//	{
//		dest++;
//	}
//
//	while (*dest++ = *src++)
//	{
//		;
//	}
//
//	return ret;
//}
//
//int main()
//{
//	char arr1[20] = "hello";
//	my_strcat(arr1, arr1);
//	printf("%s\n", arr1);
//
//	return 0;
//}



//VS
//> 1
//= 0
//< -1
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	int ret = strcmp("abcdef", "abq");
//	printf("%d\n", ret);
//
//	return 0;
//}




//#include <stdio.h>
//#include <assert.h>
//
////int my_strcmp(const char* str1, const char* str2)
////{
////	assert(str1 && str2);
////	
////	while (*str1 == *str2)
////	{
////		if ('\0' == *str1)
////		{
////			return 0;
////		}
////		
////		str1++;
////		str2++;
////	}
////
////	if (*str1 > *str2)
////	{
////		return 1;
////	}
////	else
////	{
////		return -1;
////	}
////
////}
//
//int my_strcmp(const char* str1, const char* str2)
//{
//	assert(str1 && str2);
//
//	while (*str1 == *str2)
//	{
//		if ('\0' == *str1)
//		{
//			return 0;
//		}
//
//		str1++;
//		str2++;
//	}
//
//	return (*str1 - *str2);
//}
//
//int main()
//{
//	int ret = my_strcmp("bbq", "bcq");
//
//	if (ret > 0)
//	{
//		printf(">\n");
//	}
//
//	printf("%d\n", ret);
//
//	return 0;
//}




//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr1[20] = "abcdef";
//	//char arr2[] = "xxxxxxxxxxxxx";
//	//strncpy(arr1, arr2, 3);
//	//printf("%s\n", arr1);//xxxdef
//	char arr2[] = "xxx";
//	strncpy(arr1, arr2, 5);
//	printf("%s\n", arr1);//xxx
//
//	return 0;
//}





//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr1[20] = "abcdef\0yyyyyyyyyyy";
//	char arr2[] = "xxx";
//	strncat(arr1, arr2, 5);
//
//	return 0;
//}



//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr1[20] = "abcdef\0yyyyyyyyyyy";
//	char arr2[] = "xxxxxxxxx";
//	strncat(arr1, arr2, 3);
//
//	return 0;
//}





//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr1[] = "abcqwertyuiop";
//	char arr2[] = "abcdef";
//	printf("%d\n", strncmp(arr1, arr2, 3));//0
//
//	return 0;
//}





//strstr - 字符串中找子字符串
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr1[] = "abcdefabcdef";
//	char arr2[] = "def";
//	char* ret = strstr(arr1, arr2);
//	
//	if (ret != NULL)
//	{
//		printf("%s\n", ret);//defabcdef
//	}
//	else
//	{
//		printf("找不到\n");
//	}
//
//	return 0;
//}


//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr1[] = "abcdefabcdef";
//	char arr2[] = "deq";
//	char* ret = strstr(arr1, arr2);
//
//	if (ret != NULL)
//	{
//		printf("%s\n", ret);
//	}
//	else
//	{
//		printf("找不到\n");
//	}
//
//	//找不到对应的字符串，返回的是NULL，所以打印找不到
//
//	return 0;
//}




//#include <stdio.h>
//
//char* my_strstr(const char* str1, const char* str2)
//{
//	char* cp = str1;
//	char* s1 = cp;
//	char* s2 = str2;
//
//	while (*cp)
//	{
//		//开始匹配
//		s1 = cp;
//		s2 = str2;
//
//		while (*s1 && *s2 && *s1 == *s2)
//		{
//			s1++;
//			s2++;
//		}
//
//		if ('\0' == *s2)
//		{
//			return cp;
//		}
//
//		cp++;
//	}
//
//	return NULL;
//}
//
//int main()
//{
//	char arr1[] = "abbbcdef";
//	char arr2[] = "bbc";
//	char* ret = my_strstr(arr1, arr2);
//
//	if (ret != NULL)
//	{
//		printf("%s\n", ret);//bbcdef
//	}
//	else
//	{
//		printf("找不到\n");
//	}
//
//	return 0;
//}





//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr[] = "zhangsan@yeah.net";
//	char copy[20];
//	strcpy(copy, arr);
//	char sep[] = "@.";
//
//	char* ret = strtok(copy, sep);
//	printf("%s\n", ret);
//
//	ret = strtok(NULL, sep);
//	printf("%s\n", ret);
//	
//	ret = strtok(NULL, sep);
//	printf("%s\n", ret);
//
//	return 0;
//}


//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr[] = "zhangsan@yeah.net@666#777";
//	char copy[30];
//	strcpy(copy, arr);
//	char sep[] = "@.#";
//	char* ret = NULL;
//
//	for (ret = strtok(copy, sep); ret != NULL; ret = strtok(NULL, sep))
//	{
//		printf("%s\n", ret);
//	}
//
//	return 0;
//}




//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	int i = 0;
//	
//	for (i = 0; i < 10; i++)
//	{
//		printf("%d: %s\n", i, strerror(i));
//	}
//
//	return 0;
//}




//#include <stdio.h>
//#include <string.h>
//#include <errno.h>
//
//int main()
//{
//	//C语言中可以操作文件
//	//操作文件的步骤
//	//1. 打开文件
//	//2. 读/写文件
//	//3. 关闭文件
//
//	FILE* pf = fopen("data.txt", "r");//打开data.txt这个文件，而且是为了读来打开这个文件，这个函数返回的是一个FILE*的指针，打开失败返回的是空指针
//
//	if (NULL == pf)
//	{
//		printf("%s\n", strerror(errno));
//		
//		return 1;//和ruturn 0做个区分，这是失败返回的
//	}
//
//	//读文件
//	//...
//
//	//关闭文件
//	fclose(pf);
//
//	return 0;
//}




//#include <stdio.h>
//
//int main()
//{
//	//C语言中可以操作文件
//	//操作文件的步骤
//	//1. 打开文件
//	//2. 读/写文件
//	//3. 关闭文件
//
//	FILE* pf = fopen("data.txt", "r");
//
//	if (NULL == pf)
//	{
//		perror("fopen");//先打印fopen: ，然后再打印错误信息
//		//perror里面的内容可以自定义
//		
//		return 1;
//	}
//
//	//读文件
//	//...
//
//	//关闭文件
//	fclose(pf);
//
//	return 0;
//}




//#include <stdio.h>
//#include <ctype.h>
//
//int main()
//{
//	//isupper
//	//大写返回非0
//	//其他返回0
//	printf("%d\n", isupper('A'));//1
//	printf("%d\n", isupper('a'));//0
//
//	printf("%d\n", isdigit('2'));//4
//	printf("%d\n", isdigit('X'));//0
//
//	return 0;
//}



//#include <stdio.h>
//#include <ctype.h>
//
//int main()
//{
//	printf("%c\n", tolower('A'));//a
//	printf("%c\n", tolower('s'));//s
//
//	return 0;
//}



#include <stdio.h>
#include <ctype.h>

int main()
{
	char arr[20] = { 0 };
	gets(arr);//遇到空格继续读
	char* p = arr;

	while (*p)
	{
		if (isupper(*p))
		{
			*p = tolower(*p);
		}

		p++;
	}

	printf("%s\n", arr);

	return 0;
}